#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <stdlib.h>
int main()
{
    key_t key = ftok(".", 123);
    printf("我是1号: key = %d\n", key);

    int shmid = shmget(key, 1024, IPC_CREAT|IPC_EXCL|0666);
    if(shmid == -1)
    {
        perror("shmget: ");
        //exit(1);
    }
    else
    {
        printf("成功, shmid = %d\n", shmid);
    }

    // key = ftok("../..", 123);
    // shmid = shmget(key, 1024, IPC_CREAT|IPC_EXCL);
    //     if(shmid == -1)
    // {
    //     perror("shmget: ");
    //     exit(1);
    // }
    // else
    // {
    //     printf("成功, shmid = %d\n", shmid);
    // }

    printf("3秒后挂接\n");
    sleep(3);
    char* shmaddr = (char*)shmat(shmid, NULL, 0);
    //使用
    while(1)
    {
        scanf("%s",shmaddr);
        sleep(1);
        if(shmaddr[0] == 'q') break;
    }
    printf("3秒后去关联\n");
    sleep(3);
    int n = shmdt(shmaddr);

    printf("5秒后删除共享内存 %d\n", shmid);
    sleep(5);
    n = shmctl(shmid, IPC_RMID, NULL);
    printf("已删除\n");
    return 0;
}